Labels:text | screenshot | font OCR: : Program. FunktionenPost . mod Contents. floating-point arithmetic compiler with postscript output Author. Richard Gunther [gum] : Address . HeilbronnerStr .267, 7410 Reutlingen Phone. Copyright . 07121/66432 Public Domain : Language . Oberon : Translator. AmigaOberon v2.14d :History. V1.0 [gum] 04-July-92 first implementation Bugs . none known ******** ******************* ******** ) Dieses Modul "bersetzt Terme mit Realzahlen in eine Postscript-Unterroutine, wie es z.B. for die einfache Druckerausgabe von Funktionsplottern (s. Beispiel) verlangt wird. COPYRIGHT: Dieses Paket darf nur in vollem Umfang und nur zum Selbstkostenbetra (max. 5 .- DM) weitergegeben werden. Jegliche kommerzielle Nutzung ohne schriftliche Genemigung von mir ist untersagt und wird zivil- rechtlich verfolgt! Wenn Sie Verbesserungen am Modul vornehmen bitte ich Sie darum, mich davon in Kenntnis zu setzen, damit auch andere davon profitieren k+nnen. PROZEDUR-DOKUMENTATION : Die Compile-Prozedur erwartet einen Term nach folgendem Schema (EBNF) : Ausdruck = Summe . Summe = Produkt {("+"I"-") Produkt} . Produkt = Potenz {("x"I"/") Potenz). Potenz = Faktor {"^" Faktor}. Faktor = ["+"I"_"](("(" Summe ")")I (Funktion "(" Summe ")") ! Variable | Zahl | "pi" I "e"). Funktion I "COS" | "TAN" I .. Zahl = Ziffern["." Ziffern]["E"["+"\"-"] Ziffern]. = "SIN" Ziffern = Ziffer {Ziffer}. Variable = CHAR. Die unterst"tzten Funktionen sind : ABS, SQRT, EXP, LN, LOG, ACOS, ASIN, ATAN, COS, COSH, SIN, SINH, TAN und TANH Achtung! ACOS, ASIN, COSH, SINH und TANH werden von Postscript nicht direkt unterst"tzt, sie werden daher "ber komplexe ( langsame! ) Macros berechnet (s. Quelltext). PROCEDURE Compile( source ARRAY OF CHAR; Vars ARRAY OF CHAR; name ARRAY OF CHAR; VAR proc ARRAY OF BYTE; VAR errpos INTEGER ): BOOLEAN ; INPUT : source Der Term nach obiger Definition, der compiliert werden INPUT : soll. Vars String, der die verwendeten Variablen enthelt, z.B. "x" oder "xyz". Reihenfolge beachten (s.u.) INPUT : Variablen und Bezeichner sind caseinsensitive! precision Hier sollten Sie den Namen angeben, den die Postscr ipt- routine erhalten soll. OUTPUT : proc Sie sollten hier eine Stringvariable mit gen"gend Platz (mindestens 256 Zeichen) "bergeben, in die die OUTPUT : errpos compilierte Routine geschrieben wird. Zeichenposition, an der ein Fehler auftrat oder -1, wenn alles ok war. RESULT: TRUE, wenn alles ok war, sonst FALSE (genaueres s. errpos). Der Aufruf lautet also z. B .: (* ... * ) VAR postproc : ARRAY 256 OF CHAR ; term : ARRAY 64 OF CHAR ; errpos : INTEGER ; term : = "xxsin(x)" ; IF FunktionenPost. Compile(term, "x", "func1", postproc, errpos) THEN IF "FileSystem. WriteString (File, postproc) THEN *) END (* BEISPIELPROGRAMM : Das Beispielprogramm FunktionenTest ist ein kleiner Funktionsplotter mit Postscriptausgang . Es folgt eine Kurzbeschreibung der Gadgets (obwohl eigentlich selbst- erklErend . . . ) : ADD f"gt eine Funktion an die Liste an DEL 1+scht die aktuelle Funktion aus der Liste -> Funktion schaltet zwischen den Funktionen hin und her POSTSCRIPT Stringgadget zur Eingabe des Funktionsterms erstellt eine Postscriptdatei mit allen Funktionen aus der Liste REDRAW zeichnet alle Funktionen aus der Liste neu CLEAR 1+scht alle Funktionen QUIT beendet das Programm Die Postscriptdatei k+nnen sie entweder auf einem postscriptf&higen Laserdrucker oder mit der PD-PostLibrary (FISH#518) ausdrucken. Viel Spa-